package com.xj.algorithm.leetcode;

/**
 * 4的幂
 */
public class L342_判断是否是4的幂 {

    /**
     * 给定一个整数 (32 位有符号整数)，请编写一个函数来判断它是否是 4 的幂次方。
     *
     * 示例 1:
     *
     * 输入: 16
     * 输出: true
     * 示例 2:
     *
     * 输入: 5
     * 输出: false
     * 进阶：
     * 你能不使用循环或者递归来完成本题吗？
     */
    public static void main(String[] args) {
        System.out.println(isPowerOfThreeOffice(16));
        System.out.println(isPowerOfThreeOffice(5));
    }

    //自己的解法：循环除以4
    public static boolean isPowerOfFour(int num) {
        if(num==0){
            return false;
        }
        while (num%4==0){
            num=num/4;
        }
        if(num==1){
            return true;
        }
        return false;
    }

    //官方解法：进制转换和正则表达式匹配。使用了java内置函数
    public static boolean isPowerOfThreeOffice(int num) {
        return Integer.toString(num, 4).matches("^10*$");
    }
}
